package cn.cvs.dao;

import cn.cvs.pojo.StorageRecord;
import cn.cvs.pojo.Supplier;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface StorageRecordMapper {
    /**
     * 根据商品名称（模糊匹配）、供货商Id、支付状态三个条件查询入库记录
     * @param goodsName
     * @param supplierId
     * @param payStatus
     * @return 查询结果包括入库记录编码、商品名称、供货商Id、商品总额、支付状态、创建时间
     */
    List<StorageRecord> getStorageRecordList(@Param("goodsName") String goodsName, @Param("supplierId") int supplierId, @Param("payStatus") int payStatus);

    /**
     * 在getStorageRecordList基础上，在查询中增加供货商名称字段，使用resultMap元素实现自定义结果映射
     * @param storageRecord
     * @return
     */
    List<StorageRecord> getStorageRecordListWithSupName(StorageRecord storageRecord);

    /**
     * 在getStorageRecordListWithSupName基础上，实现嵌套结果查询，查询并展示入库记录编码、商品名称、供货商编码、
     * 供货商名称、联系人、联系电话、商品总额、支付状态
     * 1、在StorageRecord实体类中，增加实体类Supplier属性
     * 2、编写sql，连接查询入库记录表和供货商表相关字段
     * 3、在映射文件中添加resultMap元素自定义映射结果，并使用association元素为Supplier属性定义嵌套结果映射
     * @param storageRecord
     * @return
     */
    List<StorageRecord> getStorageRecordAndSupplierList(StorageRecord storageRecord);

    /**
     * 根据数据起始位置pageBegin和页面大小pageSize进行分页查询，并将查询结果以创建时间倒叙排列
     * @param pageBegin
     * @param pageSize
     * @return
     */
    List<StorageRecord> getListByPageIndex(@Param("pageBegin") Integer pageBegin, @Param("pageSize") Integer pageSize);
}
